#include "app_common.h"
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "log/log.h"

//获取当前时间辍 (毫秒)
long app_common_getCurrentTime(void){
    struct timeval tv;
    //时区默认为当前所在时区
    gettimeofday(&tv, NULL);
    //tv.tv_sec 秒数 tv.tv_usec 微秒
    //因为要返回毫秒，所以需要转换（结构体唯独莫得毫秒）
    return tv.tv_sec * 1000 + tv.tv_usec / 1000;
}

//将char数组转为十六进制字符串，因为json转换字符串
//参数：字符数组、字符数组长度
//返回值：十六进制字符串，因为json转换字符串
char * app_common_charToHex(char *char_ary,int len){
    //字符数组长度为len，则十六进制字符数组长度为len*2,因为一个字符对应8字节2个数字
    char *hex_ary = (char *)malloc(len * 2+1);
    //将字符数组转为十六进制字符串，1个元素对应2个数字
    for(int i = 0; i < len; i++){
        sprintf(hex_ary + i * 2, "%02x", char_ary[i]);
    }
    //添加结束标记
    hex_ary[len * 2] = '\0';
    return hex_ary;
}

//将十六进制字符串转为char数组
//参数：十六进制字符串、字符数组长度
//返回值：字符数组
char * app_common_hexToChar(char *json,int *char_len){
    *char_len = strlen(json) / 2;
    char *char_ary = (char *)malloc(*char_len);
    for(int i=0;i<(*char_len);i++){
        sscanf(json+2*i,"%02x",(unsigned int *)&char_ary[i]);
    }
    return char_ary;
}

